home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Palettes / PAThumbWheel / PAThumbWheelCell.h < prev    next >
Text File  |  1995-06-12  |  4KB  |  133 lines

  1. #import <appkit/appkit.h>
  2.  
  3. /******************************************************************************
  4.     PAThumbWheelCell
  5.     
  6. PAThumbWheel offers the functionality of Slider plus the features that you would expect from a real thumbwheel (including 2 3/4 D Graphics!).
  7.  
  8. PAThumbWheel has a linear display mode and a radial display mode and offers the ability to assign a value to the visible region of the control as well as an absolute value that the ThumbWheel will either ignore, bound to or wrap around.
  9.  
  10. PAThumbWheel can also return relative values via its -relativeIntValue & -relativeFloatValue methods. A snap back option allows mouse loops to start from and return to a base value.
  11.  
  12. Copyright 1992, Jeff Martin. (jmartin@next.com 415-780-3833)
  13. ******************************************************************************/
  14. @interface PAThumbWheelCell : ActionCell
  15. {
  16.     int        displayMode;    // DISPLAY_MODE_LINEAR or DISPLAY_MODE_RADIAL
  17.     int        direction;        // DIRECTION_HORIZONTAL or DIRECTION_VERTICAL
  18.  
  19.     float    floatValue;        // Float value of TW
  20.     float    lastFloatValue;    // Used to calculate relative change in value
  21.  
  22.     float    visMax;            // Value at top or right point
  23.     float    visMin;            // Value at bottom or left point
  24.  
  25.     int        absMode;        // ABSOLUTE_UNBOUNDED, _BOUNDED and _WRAPPED
  26.     float    absMax;            // Max value (meaningless if unbounded)
  27.     float    absMin;            // Min value (meaningless if unbounded)
  28.     
  29.     BOOL    snapsBack;        // Whether TW snaps back to a value when done
  30.     float    snapBackValue;    // Value to snap back to (typically 0)
  31.  
  32.     int        dashInterval;    // How often to draw a dash (in points or degrees)    
  33.     BOOL    showMainDash;    // Set this to NO if you only want relative values
  34.  
  35.     NXColor color;            // Color of the Thumbwheel
  36.     NXImage    *image;            // Background of Thumbwheel in radial mode
  37.     NXRect    cellFrame;        // Frame of the cell at track mouse time.
  38. }
  39.  
  40. - init;
  41.  
  42. // Overridden Cell Methods
  43. - (BOOL)continueTracking:(const NXPoint *)lastPoint 
  44.     at:(const NXPoint *)currPoint inView:view;
  45. - stopTracking:(const NXPoint *)lastPoint at:(const NXPoint *)stopPoint
  46.     inView:view mouseIsUp:(BOOL)flag;
  47.  
  48. // The value that corresponds to a point relative to visible range and frame
  49. - (float)floatValueAtPoint:(NXPoint)point forFrame:(NXRect)frame;
  50.  
  51. // Direction: vertical or horizontal
  52. - (int)direction;
  53. - setDirection:(int)dir;
  54. - (BOOL)isVertical;
  55. - setVertical;
  56. - (BOOL)isHorizontal;
  57. - setHorizontal;
  58.  
  59. // DisplayMode: radial or linear
  60. - (int)displayMode;
  61. - setDisplayMode:(int)mode;
  62. - (BOOL)isRadial;
  63. - setRadial;
  64. - (BOOL)isLinear;
  65. - setLinear;
  66.  
  67. // Visible min and max
  68. - (float)visibleMax;
  69. - setVisibleMax:(float)max;
  70. - (float)visibleMin;
  71. - setVisibleMin:(float)min;
  72. - (float)visibleRange;
  73. - (float)middleValue;
  74.  
  75. // Absolute mode: unbounded, bounded or wrapped
  76. - (int)absoluteMode;
  77. - setAbsoluteMode:(int)mode;
  78. - (BOOL)isUnbounded;
  79. - setUnbounded;
  80. - (BOOL)isBounded;
  81. - setBounded;
  82. - (BOOL)isWrapped;
  83. - setWrapped;
  84. - (float)absoluteMax;
  85. - setAbsoluteMax:(float)value;
  86. - (float)absoluteMin;
  87. - setAbsoluteMin:(float)value;
  88. - (float)absoluteRange;
  89.  
  90. // Relative Values
  91. - (int)relativeIntValue;
  92. - (float)relativeFloatValue;
  93. - resetRelativeValue;
  94.  
  95. // Snap back characteristic
  96. - (BOOL)snapsBack;
  97. - setSnapsBack:(BOOL)flag;
  98. - (float)snapBackValue;
  99. - setSnapBackValue:(float)val;
  100.  
  101. // Dash interval (set in degrees or points depending on displayMode)
  102. - (float)dashInterval;
  103. - setDashInterval:(float)val;
  104.  
  105. // Showing the main dash
  106. - (BOOL)showMainDash;
  107. - setShowMainDash:(BOOL)flag;
  108.  
  109. // Color of the ThumbWheel
  110. - (NXColor)color;
  111. - setColor:(NXColor)color;
  112.  
  113. // Shift calcs the shift of the dashes from the floatValue, visRange & frame
  114. - (int)shift:(const NXRect *)frame;
  115.  
  116. // Override highlight:inView:lit: so that it does nothing
  117. - highlight:(const NXRect *)frame inView:view lit:(BOOL)flag;
  118.  
  119. // Override this so that we track mouse whether or not it is on top of us.
  120. + (BOOL)prefersTrackingUntilMouseUp;
  121.  
  122. @end
  123.  
  124. #define DISPLAY_MODE_LINEAR        0
  125. #define DISPLAY_MODE_RADIAL        1
  126.  
  127. #define DIRECTION_HORIZONTAL    0
  128. #define DIRECTION_VERTICAL        1
  129.  
  130. #define ABSOLUTE_UNBOUNDED        0
  131. #define ABSOLUTE_BOUNDED        1
  132. #define ABSOLUTE_WRAPPED        2
  133.